//package com.xiaoyu.awakening.ai.common.prompt;
//
//import cn.hutool.core.util.StrUtil;
//import com.alibaba.cloud.ai.prompt.ConfigurablePromptTemplate;
//import com.alibaba.cloud.ai.prompt.ConfigurablePromptTemplateFactory;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.ai.chat.prompt.Prompt;
//import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
//import org.springframework.stereotype.Service;
//
//import java.util.Map;
//
///**
// * 提示词服务
// *
// * @author wangxiaoyu
// * @date 2025/9/17 14:55
// * @since v1.0
// */
//@Service
//@ConditionalOnProperty(prefix = "spring.ai.nacos.prompt.template.enabled", havingValue = "true")
//@Slf4j
//public class AwkPromptService {
//    private final ConfigurablePromptTemplateFactory configurablePromptTemplateFactory;
//
//    public AwkPromptService(ConfigurablePromptTemplateFactory configurablePromptTemplateFactory) {
//        this.configurablePromptTemplateFactory = configurablePromptTemplateFactory;
//        log.info("AwkPromptService init, configurablePromptTemplateFactory: {}", configurablePromptTemplateFactory);
//    }
//
//    private static final String PROMPT_TEMPLATE_NAME_PATTERN = "^[a-zA-Z0-9_]+$";
//
//    private static final String PROMPT_TEMPLATE_NAME_SEPARATOR = "_";
//
//    public Boolean createPromptTemplate(String name, String promptTemplate, Boolean isOverride, Boolean enableSecurityCheck) {
//        // 校验提示词模版名称: {业务服务}_{业务模块}_{业务功能}
//        if (!name.matches(PROMPT_TEMPLATE_NAME_PATTERN)) {
//            throw new IllegalArgumentException("提示词模版名称只能包含字母、数字和下划线");
//        }
//        if (StrUtil.count(name, PROMPT_TEMPLATE_NAME_SEPARATOR) != 2) {
//             throw new IllegalArgumentException("提示词模版名称必须包含3个部分，格式为 {业务服务}_{业务模块}_{业务功能}");
//        }
//        if (enableSecurityCheck) {
//            doSecurityCheck(promptTemplate);
//        }
//        synchronized (this) {
//            if (isOverride) {
//                configurablePromptTemplateFactory.create(name, promptTemplate);
//            } else {
//                ConfigurablePromptTemplate template = configurablePromptTemplateFactory.getTemplate(name);
//                if (template == null) {
//                    configurablePromptTemplateFactory.create(name, promptTemplate);
//                    return true;
//                }
//                log.warn("prompt template {} already exists, skip create", name);
//            }
//            return true;
//        }
//    }
//
//    public Prompt getPrompt(String name, Map<String, Object> variables) {
//        ConfigurablePromptTemplate template = configurablePromptTemplateFactory.getTemplate(name);
//        if (template == null) {
//            return null;
//        }
//        return template.create(variables);
//    }
//
//    public void doSecurityCheck(String promptTemplate) {
//        // 校验提示词模版是否包含敏感信息
//        if (promptTemplate.contains("${")) {
//            throw new IllegalArgumentException("提示词模版包含敏感信息");
//        }
//    }
//
//}
